@@ -0,0 +1 @@ |
||
| 1 |
+node_modules/ |
@@ -0,0 +1,15 @@ |
||
| 1 |
+{
|
|
| 2 |
+ "name": "hubot-multi-adapter", |
|
| 3 |
+ "version": "0.1.0", |
|
| 4 |
+ "description": "A Hubot adapter that can receive messages thru socket.io or telegram", |
|
| 5 |
+ "main": "index.js", |
|
| 6 |
+ "scripts": {
|
|
| 7 |
+ "test": "echo \"Error: no test specified\" && exit 1" |
|
| 8 |
+ }, |
|
| 9 |
+ "author": "James Peret", |
|
| 10 |
+ "license": "ISC", |
|
| 11 |
+ "dependencies": {
|
|
| 12 |
+ "express": "^4.15.2", |
|
| 13 |
+ "socket.io": "^2.0.1" |
|
| 14 |
+ } |
|
| 15 |
+} |
@@ -0,0 +1,50 @@ |
||
| 1 |
+{Adapter,TextMessage} = require 'hubot'
|
|
| 2 |
+ |
|
| 3 |
+port = parseInt process.env.HUBOT_SOCKETIO_PORT or 9090 |
|
| 4 |
+console.log("socket.io server on port " + port);
|
|
| 5 |
+ |
|
| 6 |
+io = require('socket.io').listen port
|
|
| 7 |
+ |
|
| 8 |
+express = require('express')
|
|
| 9 |
+app = express() |
|
| 10 |
+ |
|
| 11 |
+class MultiAdapter extends Adapter |
|
| 12 |
+ |
|
| 13 |
+ constructor: (@robot) -> |
|
| 14 |
+ @sockets = {}
|
|
| 15 |
+ super @robot |
|
| 16 |
+ |
|
| 17 |
+ send: (user, strings...) -> |
|
| 18 |
+ socket = @sockets[user.room] |
|
| 19 |
+ console.log("Sending response to user " + user.name + ":")
|
|
| 20 |
+ console.log(str for str in strings) |
|
| 21 |
+ for str in strings |
|
| 22 |
+ socket.emit 'message', str |
|
| 23 |
+ |
|
| 24 |
+ reply: (user, strings...) -> |
|
| 25 |
+ socket = @sockets[user.room] |
|
| 26 |
+ for str in strings |
|
| 27 |
+ socket.emit 'message', str |
|
| 28 |
+ |
|
| 29 |
+ run: -> |
|
| 30 |
+ io.sockets.on 'connection', (socket) => |
|
| 31 |
+ @sockets[socket.id] = socket |
|
| 32 |
+ console.log("New user connect (" + socket.id + ")")
|
|
| 33 |
+ @robot.brain.set 'log_id_' + socket.id, new Date().getUTCMilliseconds(); |
|
| 34 |
+ |
|
| 35 |
+ socket.on 'message', (data) => |
|
| 36 |
+ user = @userForId socket.id, name: data.username, room: socket.id |
|
| 37 |
+ console.log("Message Received from user " + data.username + ":" )
|
|
| 38 |
+ console.log(data.message) |
|
| 39 |
+ user.name = data.username |
|
| 40 |
+ @receive new TextMessage user, data.message |
|
| 41 |
+ |
|
| 42 |
+ socket.on 'disconnect', => |
|
| 43 |
+ console.log("User disconected (" + socket.id + ")")
|
|
| 44 |
+ @robot.brain.remove 'log_id_' + socket.id |
|
| 45 |
+ delete @sockets[socket.id] |
|
| 46 |
+ |
|
| 47 |
+ @emit 'connected' |
|
| 48 |
+ |
|
| 49 |
+exports.use = (robot) -> |
|
| 50 |
+ new MultiAdapter robot |